// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.mapper.qad;

import java.util.List;
import java.util.Map;

import com.liuxinlong.modules.material.dto.MaterialInfoDto;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

/**
 * 类描述
 * <p>
 * 此类关联设计的功能
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2022年2月22日
 */
public interface PTMstrMapper {

    /**
     * 查询物料
     *
     * @param queryParam 查询参数
     * @return 物料列表
     */
    List<Map<String, Object>> pagePTMstrList(@Param("queryParam") Map<String, Object> queryParam);

    /**
     * 查询物料条数
     *
     * @param queryParam 查询参数
     * @return 物料条数
     */
    int getMaterialCount(@Param("queryParam") Map<String, Object> queryParam);

    /**
     * 查询单条物料
     *
     * @param materialNo 物料号
     * @param region     作用域
     * @return 单条物料详情
     */
    Map<String, Object> getOneMaterial(@Param("materialNo") String materialNo, @Param("region") String region);

    /**
     * 查询单条物料
     *
     * @param materialNo 物料号
     * @param region     作用域
     * @return 单条物料详情
     */
    Map<String, Object> getOneSiteMaterial(@Param("materialNo") String materialNo, @Param("region") String region);

    /**
     * 批量查询物料
     *
     * @param materialNoList 物料号
     * @param region         作用域
     * @return 物料详情
     */
    @MapKey("pt_part")
    Map<String, Map<String, Object>> getMaterials(@Param("list") List<String> materialNoList, @Param("region") String region);

    /**
     * 批量查询子物料
     *
     * @param materialNoList 物料号
     * @param region         作用域
     * @param startTime      子项有效期起始时间
     * @return 子物料详情
     */
    List<MaterialInfoDto> getChildMaterials(@Param("list") List<String> materialNoList, @Param("region") String region,
                                            @Param("startTime") String startTime);

    /**
     * 获取物料信息
     *
     * @param keyword 查询关键字
     * @param region  作用域
     * @return 物料信息
     */
    List<Map<String, String>> asyncQueryMaterial(@Param("keyword") String keyword, @Param("region") String region);

    /**
     * 获取物料信息
     *
     * @param keyword 查询关键字
     * @param region  作用域
     * @return 物料信息
     */
    List<Map<String, String>> asyncQuerySiteMaterial(@Param("keyword") String keyword, @Param("region") String region);

    /**
     * 批量查询父物料
     *
     * @param materialNoList 物料号
     * @param region         作用域
     * @return 父物料详情
     */
    List<MaterialInfoDto> getParentMaterials(@Param("list") List<String> materialNoList, @Param("region") String region);

    /**
     * 获取物料信息
     *
     * @param materialNo 物料号
     * @return 物料信息
     */
    List<Map<String, Object>> getMaterialInfo(@Param("materialNo") String materialNo);


    /**
     * 获取物料信息
     *
     * @param materialNo 物料号
     * @return 物料信息
     */
    List<Map<String, Object>> getPgsMaterialInfo(@Param("materialNo") String materialNo);

    /**
     * 获取物料相关信息
     *
     * @param materialNo 物料号
     * @param region     物料所属域
     * @return 物料相关信息
     */
    Map<String, Object> getMaterialExpandInfo(@Param("materialNo") String materialNo, @Param("region") String region);

    /**
     * 获取物料信息
     *
     * @param materialNo     物料号
     * @param parentMaterial 父物料号
     * @param region         物料所属域
     * @return 物料信息
     */
    Map<String, Object> getNeedDealMaterial(@Param("materialNo") String materialNo, @Param("parentMaterial") String parentMaterial, @Param("region") String region);

    /**
     * 获取带地点物料信息
     *
     * @param materialNo 物料号
     * @return 物料信息
     */
    List<Map<String,Object>> getPgsSiteMaterialInfo(String materialNo);
}
